# JosephDiPietro.github.io
## CMSC320 Final Project
## Introduction
####Human Trafficking has always been a major problem in the world and it has devastating effects on its victims. With new databases we can examine risk factors in order to help mitigate this problem and counter the abusers. In this project I will be examing the age of the victims, knowledge of the abuser, type of abuse used for trafficking, and whether the victim was abducted or not. The data that I will use comes from the CTDC and contains information from all over the world. In order to keep a reasonable scope for this project the data has been pre-processed to include online United States cases. These cases range from years 2015 to 2018. Using data analytics we can predict whether abusers are more violent or have a closer relation to the victim based on factors like age.
import pandas as pd
import seaborn as sea
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import numpy as np
import folium
from folium.plugins import MarkerCluster
globalFrame = pd.read_csv("trafficking.csv")
globalFrame = globalFrame.drop(globalFrame.columns[0],1)
globalFrame = globalFrame.drop(["Datasource","ageBroad","majorityStatus","majorityEntry"],1)
globalFrame = globalFrame.rename(columns = {"yearOfRegistration":"year","majorityStatusAtExploit":"majorityStatus","meansOfControlDebtBondage":"DebtBondage",
"meansOfControlTakesEarnings":"EarningsStolen","meansOfControlRestrictsFinancialAccess": "WithholdsMoney",
"meansOfControlThreats":"Threats","meansOfControlPsychologicalAbuse":"PsychologicalAbuse",
"meansOfControlPhysicalAbuse":"PhysicalAbuse","meansOfControlSexualAbuse":"SexualAbuse",
"meansOfControlFalsePromises":"FalsePromises","meansOfControlPsychoactiveSubstances":"PsychoactiveSubstances",
"meansOfControlRestrictsMovement":"RestrictsMovement","meansOfControlRestrictsMedicalCare":"RestrictsMedicalCare",
"meansOfControlExcessiveWorkingHours":"ExcessiveWorkingHours","meansOfControlUsesChildren":"UsesChildren",
"meansOfControlThreatOfLawEnforcement":"ThreatOfLawEnforcement","meansOfControlWithholdsNecessities":"WithholdsNecessities",
"meansOfControlWithholdsDocuments":"WithholdsDocuments","meansOfControlOther":"OtherControl","meansOfControlNotSpecified":"ControlNotSpecified",
"recruiterRelationIntimatePartner":"IntimatePartner","recruiterRelationFriend":"Friend","recruiterRelationFamily":"Family",
"recruiterRelationOther":"OtherRelation","recruiterRelationUnknown":"UnknownRelation"})
frame = globalFrame[globalFrame['citizenship'] == "US"]
frame = frame.reset_index()
frame = frame.drop('index',1)
frame.head()
frame["Cases"] = 1
frame.loc[frame['majorityStatus'] == '0', 'majorityStatus'] = "unkown"
ageFrame = frame.groupby(["majorityStatus","year"]).sum()
ageFrame['Cases'].plot.bar()
ageFrame = ageFrame.reset_index()
ageFrame
ageFrame = ageFrame[ageFrame['majorityStatus'] != "unkown"]
physcialAbuse = sea.scatterplot(x = "year",y = "PhysicalAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
sexualAbuse = sea.scatterplot(x = "year",y = "SexualAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
pschologicalAbuse = sea.scatterplot(x = "year",y = "PsychologicalAbuse",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
psychoactiveDrugs = sea.scatterplot(x = "year",y = "PsychoactiveSubstances",hue = "majorityStatus",data = ageFrame)
plt.show()
plt.clf()
predictFrame = frame[frame["majorityStatus"] != "unkown"]
for index,row in predictFrame.iterrows():
if(row.majorityStatus == "Minor"):
predictFrame.loc[index,"BinaryAge"] = 1
else:
predictFrame.loc[index,"BinaryAge"] = 0
predictAge = predictFrame[["year","BinaryAge"]]
model = LogisticRegression()
model.fit(X = predictAge.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
model.predict(np.array([[2017]]))
predictFrame
predictAbuse = predictFrame[["year","DebtBondage","EarningsStolen","WithholdsMoney","Threats","PhysicalAbuse","SexualAbuse","FalsePromises",
"PsychoactiveSubstances","RestrictsMovement","RestrictsMedicalCare","ExcessiveWorkingHours",
"UsesChildren","ThreatOfLawEnforcement","WithholdsNecessities","WithholdsDocuments",
"OtherControl","ControlNotSpecified","BinaryAge"]]
model = LinearRegression()
model.fit(X = predictAbuse.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
print("A victim of threats with 1 being a minor in 2017 is",model.predict(np.array([[2017,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]])))
predictRecruit = predictFrame[["year","IntimatePartner","Family","OtherRelation","UnknownRelation","BinaryAge"]]
model = LinearRegression()
model.fit(X = predictRecruit.drop("BinaryAge",1),y = predictAbuse["BinaryAge"])
print("A victim of a family member with one being a minor in 2017 is",model.predict(np.array([[2017,0,1,0,0]])))
print("A victim of an intimate partner with one being a minor in 2015 is",model.predict(np.array([[2015,1,0,0,0]])))
m = folium.Map()
cluster = MarkerCluster().add_to(m)
for index,row in globalFrame.iterrows():
if(row.citizenship == "CO"):
folium.map.Marker(location = ['4.5709','-74.2973'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "MD"):
folium.map.Marker(location = ['47.4116','28.3699'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "RO"):
folium.map.Marker(location = ['45.9432','24.9668'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UA"):
folium.map.Marker(location = ['48.3794','31.1656'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "BY"):
folium.map.Marker(location = ['53.7098','27.9534'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "HT"):
folium.map.Marker(location = ['18.9712','-72.2852'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UZ"):
folium.map.Marker(location = ['41.3775','64.5853'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "LK"):
folium.map.Marker(location = ['7.8731','80.7718'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "LK"):
folium.map.Marker(location = ['7.8731','80.7718'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "MM"):
folium.map.Marker(location = ['21.9162','95.9560'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "UG"):
folium.map.Marker(location = ['1.3733','32.2903'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ID"):
folium.map.Marker(location = ['-0.7893','113.9213'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ID"):
folium.map.Marker(location = ['-0.7893','113.9213'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "KG"):
folium.map.Marker(location = ['42.882004','74.582748'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "AF"):
folium.map.Marker(location = ['33.9391','67.7100'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "ER"):
folium.map.Marker(location = ['15.1794','39.7823'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "NG"):
folium.map.Marker(location = ['17.6078','8.0817'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "NP"):
folium.map.Marker(location = ['28.3949','84.1240'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "PH"):
folium.map.Marker(location = ['12.8797','121.7740'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "KH"):
folium.map.Marker(location = ['12.5657','104.9910'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "BD"):
folium.map.Marker(location = ['23.6850','90.3563'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "US"):
folium.map.Marker(location = ['37.0902','-95.7129'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "TH"):
folium.map.Marker(location = ['15.8700','100.9925'],popup = row.citizenship).add_to(cluster)
if(row.citizenship == "VN"):
folium.map.Marker(location = ['14.0583','108.2772'],popup = row.citizenship).add_to(cluster)
m